jQuery Mobile 是创建移动WEB应用程序的框架,使用广泛。
web app就是一个针对移动设备的网站。
jQuery Mobile简介
jQuery Mobile(JQM/jQMobile):是jQuery在手机上和平板设备上的版本,是创建移动Web App的框架。它提供了一整套UI组件,提供了丰富的官方文档,还提供了很多针对移动端浏览器的事件,比如触摸、滑动、页面跳转等。
jQuery Mobile页面
基本的页面框架:1
2
3
4
5
6
7
8
9
10
11
12
13
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/jquery.mobile-1.4.3.css" />
<title>列车时刻表</title>
</head>
<body>
<script src="js/jquery-1.11.1.js"></script>
<script src="js/jquery.mobile-1.4.3.js"></script>
</body>
</html>
通常,一个页面应该拥有标题栏,内容,页脚三个部分。
HTML5 data-属性用于通过jQuery Mobile为移动设备创建交互外观。
HTML5 data-属性。一个页面:data-role:page
标题:data-role:header
内容:role:main class=ui-content
页脚:data-role:footer
(HTML5的属性值可以省略引号。注意内容的属性是role而不是data-role)1
2
3
4
5
6
7
8
9
10
11<div data-role="page">
<div data-role="header">
<h1>我收标题</h1>
</div>
<div role="main" class="ui-content">
<p>我是内容</p>
</div>
<div data-role="footer">
<h1>我收页脚</h1>
</div>
</div>
在jQuery Mobile中,可以在单一HTML中创建多个页面。通过唯一的id来分割每张页面,并使用href属性来连接彼此。
页可以通过js来实现:$.mobile.changePage("#detail");
过渡效果
jQuery Mobile拥有一系列关于如何从一页过渡到下一页的效果。过渡效果可应用于任意链接,如data-transition="slide"
data-transition的属性值:
- slide:默认值,从右到左滑动
- slideup:向上滑动
- slidedown:向下滑动
- popo:弹出
- fade:渐变褪色
- flip:旧页飞出,新页飞入
页面事件
jQuery Mobile拥有很多页面事件
1、page Initialization(页面初始化) - 在页面创建前(触发pagebeforcreate事件),当页面创建时(触发pagecreate事件),以及在页面初始化之后(触发pageinit事件,初始化一次)
2、page load/Unload - 当外部页面加载时、卸载时或遭遇失败时(pagebeforeload,pageload)
3、page Transition - 在页面过渡之前或之后
去的页面 过度动画开始之前 pagebeforeshow,
去的页面 过度动画完成之后 pageshow(每次进入页面都执行),
来的页面 过度动画开始之前 pagebeforehide,
来的页面 过度动画完成之后 pagehide
jQuery Mobile组件
jQuery Mobile按钮
通过给a、button或input元素添加样式class="ui-btn"
(或者添加data-role=”button”),来创建按钮。
<a href="#" class="ui-btn">按钮</a>
<button class="ui-btn">我也是按钮</button>
<input type="submit" value="我是按钮" >
JQM提供的button样式类,可以通过添加这些类,改变按钮显示的样式:
- ui-btn-inline: 在一行显示
- ui-btn-a: 按钮为白色样式
- ui-btn-b: 按钮为黑色样式
- ui-corner-all: 按钮为圆角
- ui-shadow: 添加阴影效果
jQuery Mobile禁用按钮方法:
禁用button$('#home-button').button("disable");
如果要恢复可用,则设置为:$('#home-button').button("enable");
jQuery Mobile导航栏
导航栏由一组水平排列的链接构成,通常位于页眉或页脚内部;
导航栏中的链接会自动转换为按钮;
使用data-role=”navbar”属性来定义导航栏;1
2
3
4
5
6<div data-role="navbar">
<ul>
<li><a href="#">123</a></li>
<li><a href="#">123</a></li>
</ul>
</div>
使用data-position="fixed"
,固定元素,给头部和尾部加上该属性后 将会固定在页面指定的位置不会随着主题内容的变化而滚动
使用data-icon
属性可以给导航栏的按钮增加图标<li><a href="#" data-icon="camera">123</a></li>
jQuery Mobile列表
jQuery Moile中的列表视图是标准的HTML列表:有序列表(ol)和无序列表(ul)
如需创建列表,需向ol/ul元素添加data-role="listview"
;
如需使这些列表项目可点击,在每个列表项li中规定链接即可。有链接的列表会有默认的向右箭头。data-inset="true"
不贴边显示列表,有margin,是内部列表.ui-li-aside
位置在右上角1
2
3
4
5
6
7
8
9
10<ul data-role="listview" data-inset="true">
<li><a href="#" >
<h2>G1次</h2>
<p>北京南 - 上海东</p>
<p>用时:4:50</p>
<p class="ui-li-aside">09:20开</p>
</a></li>
<li><a href="#">123</a></li>
<li><a href="#">123</a></li>
</ul>
QueryMobile listview动态刷新$("#list").listview("refresh");
jQuery Mobile表单
JQM对原生的HTML表单进行了处理。
如果表单的一个条目(如提示语和输入框)需要自适应,添加class=ui-field-contain
即可。
表单的ID必须唯一,注意一个页面中包含多个页面时,也要唯一.1
2
3
4
5
6
7
8
9
10
11
12
13
14<form action="">
<div class="ui-field-contain">
<label for="">发车站</label>
<input type="text">
</div>
<div class="ui-field-contain">
<label for="">到车站</label>
<input type="text">
</div>
<div class="ui-field-contain">
<label for="">车次</label>
<input type="text">
</div>
</form>
jQuery Mobile表格
JQM为表格提供回流表格模式:宽屏下,是一个普通表格;窄屏下,是一个表单式表格
回流表格模式 - reflow table modedata-role="table" data-mode="reflow" class="ui-responsive"
表格增加下滑线class="table-stroke"
1
2
3
4
5
6
7
8
9
10
11<table data-role="table" data-mode="reflow" class="ui-responsive table-stroke">
<thead>
<tr>
<th>第一列</th>
<th>第二列</th>
<th>第三列</th>
</tr>
</thead>
<tbody>
<tr>
...
jQuery Mobile事件
在jQuery Mobile中可以使用任何标准的jQuery事件;
jQuery Mobile还提供若干为移动浏览定制的事件:
- 触摸事件-当用户触摸屏幕时触发(敲击和滑动)
- 滚动事件
- 方向事件-当设备垂直或水平旋转时触发
页面事件-当页面被显示、隐藏、创建、加载或卸载时触发。
Touch事件在用户触摸屏幕(页面)的时候触发
- tap事件在用户敲击某个元素时触发
- taphold事件在用户敲击某个元素并保持1秒时被触发
- swipe事件在用户在某个元素上水平滑动超过30px时被触发
- scrollstart事件在用户开始滚动页面时被触发
- scrollstop事件在用户停止滚动页面是被触发
jQuery Mobile事件加载
jQuery中:1
2
3$(document).ready(function(){
//此处是jQuery事件……
});
在jQuery Mobile中:
推荐使用pageinit事件(在页面已初始化并完善样式设置后发生)$(document).on("pageinit","#page",function(){……
jQuery Mobile Ajax
jQuery Mobile使用Ajax和在jQuery中一致。
Ajax跨域
ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许JS代码进行跨域操作,因此会出现警告信息。
一般jQuery解决跨域是通过jsonp的方式,添加callback=xxx,服务器返回xxx(…)
通过CORS(跨域资源共享) Proxy对请求进行转发,就可以实现跨域访问。服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin属性为true来进行的。
直接通过前端方法来实现跨域:
一个方便的方法:www.corsproxy.com。在地址后加上url,如url地址为www.xxx.com/service,则修改为www.corsproxy.com/www.xxx.com/service即可。1
2
3
4
5var urlPre = "http://cors.itxti.net/?"; //跨域中转
var url1 = "www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?UserID=&TrainCode=G1"
$.get(urlPre+url1,{TrainCode:G1010},function(data){
alert(data);
})
火车时刻表 WEB 服务查询:http://ws.webxml.com.cn/WebServices/TrainTimeWebService.asmx
页面逻辑连通
1 | var urlPre = "http://cors.itxti.net/?"; //跨域中转 |